#ifndef _NEPTUNER_SYMBOLTABLE_H_
#define _NEPTUNER_SYMBOLTABLE_H_

#include "Symbol.h"
#include<set>
#include<vector>

class Scope;

class SymbolTable
{
public:
	std::vector<Symbol*> m_apxSymbol; //TODO: set/map would be better. Should we allow duplicates?
	Scope* m_pxOwnerScope;

	SymbolTable(Scope* pxScope)
	{
		setOwnerScope(pxScope);
	}

	void setOwnerScope(Scope* pxScope)
	{
		m_pxOwnerScope = pxScope;
	}
	~SymbolTable()
	{
	}

	void addSymbol(std::string& sName, Symbol::Type eSymbolType);
	void addSymbol(Symbol& xSymbol);
	bool isPresent(std::string& sCheckName, Symbol& out_xSymbol);
	void print();
	size_t  getSize();
};

#endif

